﻿///------------------------------------
/// ControlCore.Controller IController.cs
///------------------------------------
namespace ControlCore.Controller
{
    using System;
    using System.Windows;

    /// <summary>
    /// Interface for controller
    /// </summary>
    public interface IController
    {
        /// <summary>
        /// Initialise Controller device. Should perform all set ups so controller can be used straight away.
        /// </summary>
        void Init();

        /// <summary>
        /// Close and clean up
        /// </summary>
        void Close();

        /// <summary>
        /// Get value if controller is initialized
        /// </summary>
        bool IsInitialized { get; }

        /// <summary>
        /// New command received event
        /// </summary>
        event EventHandler<ControllerCommandEventArgs> CommandReceived;

        /// <summary>
        /// Visual output of the controller.
        /// </summary>
        FrameworkElement ControllerOutput { get; }
    }
}
